home *** CD-ROM | disk | FTP | other *** search
/ All for Cell Phones: Sony Ericsson / Sony-Ericsson 2004.iso / Java / Micromail 103 / MicroMail.jar / AccountHandler.class (.txt) < prev    next >
Encoding:
Java Class File  |  2001-09-07  |  5.5 KB  |  316 lines

  1. import com.siemens.mp.io.File;
  2. import java.io.ByteArrayInputStream;
  3. import java.io.ByteArrayOutputStream;
  4. import java.io.DataInputStream;
  5. import java.io.DataOutputStream;
  6.  
  7. public class AccountHandler {
  8.    private static int retCode;
  9.    private static int iRecordsNo = -1;
  10.    private static final String fileName;
  11.    private static final String tempFileName = "Accounts.tmp";
  12.    private static final int buffLen = 500;
  13.  
  14.    static {
  15.       fileName = "Accounts" + Globals.fileExtension;
  16.    }
  17.  
  18.    private static void closeFile() {
  19.       try {
  20.          Globals.file.close(Globals.fileDesc);
  21.       } catch (Exception var0) {
  22.       }
  23.  
  24.    }
  25.  
  26.    public static void closeIDsFile() {
  27.       try {
  28.          Globals.file2.close(Globals.fileDesc2);
  29.       } catch (Exception var0) {
  30.       }
  31.  
  32.    }
  33.  
  34.    public static void deleteRecord(Account var0) {
  35.       try {
  36.          try {
  37.             File var10000 = Globals.file2;
  38.             int var1 = File.delete(var0.accountName + Globals.fileExtension);
  39.             var10000 = Globals.file;
  40.             var1 = File.delete("Accounts.tmp");
  41.          } catch (Exception var4) {
  42.          }
  43.  
  44.          Globals.fileDesc = Globals.file.open(fileName);
  45.          Globals.fileDesc2 = Globals.file2.open("Accounts.tmp");
  46.  
  47.          for(int var7 = 0; var7 < var0.ID; ++var7) {
  48.             Globals.file.seek(Globals.fileDesc, 500 * var7);
  49.             Globals.file.read(Globals.fileDesc, Globals.byteArray, 0, 500);
  50.             Globals.file2.seek(Globals.fileDesc2, 500 * var7);
  51.             Globals.file2.write(Globals.fileDesc2, Globals.byteArray, 0, 500);
  52.          }
  53.  
  54.          for(int var2 = var0.ID + 1; var2 < iRecordsNo; ++var2) {
  55.             Globals.file.seek(Globals.fileDesc, 500 * var2);
  56.             Globals.file.read(Globals.fileDesc, Globals.byteArray, 0, 500);
  57.             Globals.file2.seek(Globals.fileDesc2, 500 * (var2 - 1));
  58.             Globals.file2.write(Globals.fileDesc2, Globals.byteArray, 0, 500);
  59.          }
  60.  
  61.          Globals.file.close(Globals.fileDesc);
  62.          Globals.file2.close(Globals.fileDesc2);
  63.          File var9 = Globals.file;
  64.          File.delete(fileName);
  65.          var9 = Globals.file2;
  66.          int var3 = File.rename("Accounts.tmp", fileName);
  67.       } catch (Exception var5) {
  68.          MicroMail.printInfo(var5.getClass().getName() + ": " + ((Throwable)var5).getMessage());
  69.          ((Throwable)var5).printStackTrace();
  70.       }
  71.  
  72.    }
  73.  
  74.    public static Account getAccount(int var0) {
  75.       openFile();
  76.  
  77.       try {
  78.          if (Globals.file.length(Globals.fileDesc) < var0 * 500) {
  79.             return null;
  80.          }
  81.       } catch (Exception var5) {
  82.       }
  83.  
  84.       Account var1 = new Account();
  85.  
  86.       try {
  87.          Globals.file.seek(Globals.fileDesc, 500 * var0);
  88.          Globals.file.read(Globals.fileDesc, Globals.byteArray, 0, 500);
  89.          ByteArrayInputStream var2 = new ByteArrayInputStream(Globals.byteArray);
  90.          DataInputStream var3 = new DataInputStream(var2);
  91.          var1.ID = var0;
  92.          var1.accountName = var3.readUTF();
  93.          var1.popHost = var3.readUTF();
  94.          var1.popPort = var3.readInt();
  95.          var1.smtpHost = var3.readUTF();
  96.          var1.smtpPort = var3.readInt();
  97.          var1.accountActive = var3.readBoolean();
  98.          var1.downloadMail = var3.readBoolean();
  99.          var1.emailName = var3.readUTF();
  100.          var1.emailAddress = var3.readUTF();
  101.          var1.replyAddress = var3.readUTF();
  102.          var1.username = var3.readUTF();
  103.          var1.password = var3.readUTF();
  104.          var3.close();
  105.          Object var7 = null;
  106.          var2.close();
  107.          Object var6 = null;
  108.       } catch (Exception var4) {
  109.          MicroMail.printInfo("method getMailAccount:" + var4.getClass().getName() + ": " + ((Throwable)var4).getMessage());
  110.          ((Throwable)var4).printStackTrace();
  111.       }
  112.  
  113.       closeFile();
  114.       return var1;
  115.    }
  116.  
  117.    public static void getActiveAccount() {
  118.    }
  119.  
  120.    public static int getCount() {
  121.       int var0 = openFile();
  122.       closeFile();
  123.       return var0;
  124.    }
  125.  
  126.    private static int openFile() {
  127.       try {
  128.          Globals.fileDesc = Globals.file.open(fileName);
  129.          iRecordsNo = Globals.file.length(Globals.fileDesc) / 500;
  130.          return iRecordsNo;
  131.       } catch (Exception var0) {
  132.          return -1;
  133.       }
  134.    }
  135.  
  136.    public static void openIDsFile(String var0) {
  137.       try {
  138.          Globals.fileDesc2 = Globals.file2.open(var0);
  139.       } catch (Exception var1) {
  140.       }
  141.  
  142.    }
  143.  
  144.    public static String[] readIDs() {
  145.       try {
  146.          if (Globals.file2.length(Globals.fileDesc2) <= 0) {
  147.             System.out.println("empty Globals.file IDS");
  148.             return null;
  149.          } else {
  150.             Globals.file2.seek(Globals.fileDesc2, 0);
  151.             int var0 = readInt();
  152.             String[] var1 = new String[var0];
  153.  
  154.             for(int var2 = 0; var2 < var0; ++var2) {
  155.                var1[var2] = readStr();
  156.             }
  157.  
  158.             return var1;
  159.          }
  160.       } catch (Exception var3) {
  161.          return null;
  162.       }
  163.    }
  164.  
  165.    public static int readInt() {
  166.       try {
  167.          Globals.file2.read(Globals.fileDesc2, Globals.byteArray, 0, 2);
  168.          int var0 = Globals.byteArray[0];
  169.          if (var0 < 0) {
  170.             var0 &= 255;
  171.          }
  172.  
  173.          int var1 = Globals.byteArray[1];
  174.          if (var1 < 0) {
  175.             var1 &= 255;
  176.          }
  177.  
  178.          int var2 = var0 << 8 | var1;
  179.          return var2;
  180.       } catch (Exception var3) {
  181.          return -1;
  182.       }
  183.    }
  184.  
  185.    public static String readStr() {
  186.       try {
  187.          int var0 = readInt();
  188.          Globals.file2.read(Globals.fileDesc2, Globals.byteArray, 0, var0);
  189.          String var1 = new String(Globals.byteArray, 0, var0);
  190.          return var1;
  191.       } catch (Exception var2) {
  192.          return null;
  193.       }
  194.    }
  195.  
  196.    public static void repairIDsFiles() {
  197.       int var1 = 0;
  198.       int var2 = getCount();
  199.       if (var2 > 0) {
  200.          for(int var3 = 0; var3 < var2; ++var3) {
  201.             Account var0 = getAccount(var3);
  202.             String var4 = var0.accountName + Globals.tmpFileExtension;
  203.  
  204.             try {
  205.                File var10000 = Globals.file;
  206.                var1 = File.exists(var4);
  207.                if (var1 != 0) {
  208.                   System.out.println("file exists:" + var4);
  209.                }
  210.             } catch (Exception var9) {
  211.                var1 = 0;
  212.             }
  213.  
  214.             if (var1 != 0) {
  215.                openIDsFile(var4);
  216.                String[] var5 = readIDs();
  217.                closeIDsFile();
  218.                if (var5 != null) {
  219.                   openIDsFile(var0.accountName + Globals.fileExtension);
  220.                   int var6 = readInt();
  221.                   if (var6 < 0) {
  222.                      var6 = 0;
  223.                   }
  224.  
  225.                   for(int var7 = 0; var7 < var5.length; ++var7) {
  226.                      writeID(var5[var7], var6 + var7 + 1);
  227.                   }
  228.  
  229.                   closeIDsFile();
  230.                }
  231.  
  232.                try {
  233.                   File var11 = Globals.file;
  234.                   File.delete(var4);
  235.                } catch (Exception var8) {
  236.                }
  237.             }
  238.          }
  239.       }
  240.  
  241.    }
  242.  
  243.    public static void storeAccount(Account var0, String var1) {
  244.       openFile();
  245.  
  246.       try {
  247.          ByteArrayOutputStream var3 = new ByteArrayOutputStream();
  248.          DataOutputStream var4 = new DataOutputStream(var3);
  249.          var4.writeUTF(var0.accountName);
  250.          var4.writeUTF(var0.popHost);
  251.          var4.writeInt(var0.popPort);
  252.          var4.writeUTF(var0.smtpHost);
  253.          var4.writeInt(var0.smtpPort);
  254.          var4.writeBoolean(var0.accountActive);
  255.          var4.writeBoolean(var0.downloadMail);
  256.          var4.writeUTF(var0.emailName);
  257.          var4.writeUTF(var0.emailAddress);
  258.          var4.writeUTF(var0.replyAddress);
  259.          var4.writeUTF(var0.username);
  260.          var4.writeUTF(var0.password);
  261.          byte[] var2 = var3.toByteArray();
  262.          var4.close();
  263.          Object var7 = null;
  264.          var3.close();
  265.          Object var6 = null;
  266.          if (var0.ID < 0) {
  267.             Globals.file.seek(Globals.fileDesc, Globals.file.length(Globals.fileDesc));
  268.             Globals.file.write(Globals.fileDesc, var2, 0, 500);
  269.             var0.ID = iRecordsNo++;
  270.          } else {
  271.             MicroMail.printInfo("update account");
  272.             Globals.file.seek(Globals.fileDesc, 500 * var0.ID);
  273.             Globals.file.write(Globals.fileDesc, var2, 0, 500);
  274.             File var10000 = Globals.file2;
  275.             File.rename(var1 + Globals.fileExtension, var0.accountName + Globals.fileExtension);
  276.          }
  277.       } catch (Exception var5) {
  278.          MicroMail.printInfo("method open:" + var5.getClass().getName() + ": " + ((Throwable)var5).getMessage());
  279.          ((Throwable)var5).printStackTrace();
  280.       }
  281.  
  282.       closeFile();
  283.    }
  284.  
  285.    public static void writeID(String var0, int var1) {
  286.       try {
  287.          Globals.file2.seek(Globals.fileDesc2, 0);
  288.          writeInt(var1);
  289.          Globals.file2.seek(Globals.fileDesc2, Globals.file2.length(Globals.fileDesc2));
  290.          writeStr(var0);
  291.       } catch (Exception var2) {
  292.       }
  293.  
  294.    }
  295.  
  296.    public static void writeInt(int var0) {
  297.       Globals.byteArray[0] = (byte)((var0 & '\uff00') >> 8);
  298.       Globals.byteArray[1] = (byte)(var0 & 255);
  299.  
  300.       try {
  301.          Globals.file2.write(Globals.fileDesc2, Globals.byteArray, 0, 2);
  302.       } catch (Exception var1) {
  303.       }
  304.  
  305.    }
  306.  
  307.    public static void writeStr(String var0) {
  308.       try {
  309.          writeInt(var0.length());
  310.          Globals.file2.write(Globals.fileDesc2, var0.getBytes(), 0, var0.length());
  311.       } catch (Exception var1) {
  312.       }
  313.  
  314.    }
  315. }
  316.